Frameworks include class libraries that provide software developers with tools for developing, testing, using, and deploying software applications. Examples of two popular frameworks are the NET™ Framework from Microsoft® Corporation of Redmond, Wash., and the JAVA™ language framework from Sun Microsystems, Inc. of Palo Alto, Calif. Generic classes (in C++ referred to as template classes; also referred to as generic types) may be provided by such frameworks.
Generic classes refer to classes, interfaces and methods that operate uniformly on values of different types. Generic classes can speed software development by packaging classes, methods, and data and making them applicable to multiple data types that are used frequently by developers. Generic classes are useful because many common classes can be parameterized by the types of data being stored and manipulated—these are called generic class declarations. Similarly, many interfaces define contracts that can be parameterized by the types of data they handle—these are called generic interface declarations. Methods may also be parameterized by type in order to implement “generic algorithms”, and these are known as ‘generic methods’.
A formal specification for a software language specifies standard syntax for the language. Formal specifications for C++ and other languages set forth generic class syntaxes that specify how generic classes (or, template classes) are defined and declared; however, formal specifications for some languages, such as JAVA™ language, do not specify generic classes. Thus, generic classes that may be provided in frameworks, or other software packages, are not readily accessible by developers of JAVA™ language source code. For example, currently, JAVA™ language source code cannot use a generic class that may be provided by the .NET™ Framework. Thus, to take full advantage of a framework, developers need the capabilities for authoring, using, and compiling generic classes that may be provided by the framework.